package com.brillilab.service.core.team;

import com.brillilab.domain.po.lab.LabMember;
import com.brillilab.domain.po.team.Team;
import com.brillilab.domain.po.team.TeamMember;
import com.brillilab.domain.vo.lab.LabMemberInfo;
import com.brillilab.domain.vo.team.TeamInfoVo;
import com.brillilab.domain.vo.team.TeamMemberVo;
import com.brillilab.domain.vo.team.TeamSelectorVo;
import com.brillilab.domain.vo.team.TeamVo;

import java.util.List;

/**
 * 研究团队
 *
 * @author WuMenghao
 * @since 2019-03-02
 */
public interface ITeamService {
    List<TeamVo> selectTeamByLabId(Long labId,Long ownerId);

    List<LabMemberInfo> selectLabMemberInfo(List<Long> labMemberIdList);

    List<LabMemberInfo> selectLabMemberInfoByLabId(Long labId);

    boolean insert(Team team);

    Team selectOneByIdAndLabIdAndIsDelete(Long id, Long labId, Integer state);

    Team selectOneByLeaderId(Long leaderId);

    boolean updateTeamIsDelete(Long teamId);

    Team selectOneByLabIdAndTeamId(Long labId, Long teamId);

    boolean updateById(Team team);

    Long selectLeaderIdByLabMemberId(Long labMemberId);
    
    Team selectByLabMemberId(Long labMemberId);

    List<TeamSelectorVo> getTeamSelector(Long labId);

    Team selectById(Long teamId);

    List<Long> getTeamLabMemberIds(Long labMemberId);
}
